import Dictionary from "@/lang/dict/dictionary";
import Layers from "@/lang/layers";
/**
 * 异步加载数据字典
 *
 * 与这个设计相关的组件：数据字典，包括下拉框、复选框等
 *
 * 数据格式：{"list": [{"label": "男", "value": 1, "style": "color:blue"}], "style": ""}
 *
 * @param setting {string|[any]} 字典的配置参数
 * @returns {Promise<Dictionary>}
 */
export default function DictionaryProvider(setting) {
    if (Layers.isBlank(setting)) {
        // 返回一个空的数据字典
        return Promise.resolve(Dictionary.DEF);
    } else if (Array.isArray(setting)) {
        // 将指定的数据列表，转换为数据字典
        return Promise.resolve(new Dictionary(setting));
    } else if (typeof setting === 'string') {
        // 使用数据字典的 key，从后台进行加载
        return Dictionary.query(setting);
    } else {
        // 位置的数据格式
        throw 'Data-dictionary only accept array or string: ' + setting;
    }
};